#pragma once

typedef enum
{
    CONN_TYPE_NONE,
    CONN_TYPE_BT,
    CONN_TYPE_LORA,
    CONN_TYPE_WIFI,
} ConnectionType;

typedef struct
{
    ConnectionType conn_type;
    int id_len;
    int msg_len;
    char *payload;
} Message;

/**
 * @brief 把一个字节数组转换为Message结构体
 * @param bytes 字节数组
 * @param bytes_len 字节数组长度
 * @return Message * 转换后的Message结构体
 */
Message *app_message_bytes_to_message(char *bytes, int bytes_len);

/**
 * @brief 把一个Message结构体转换为一个字节数组
 * @param message Message结构体
 * @param bytes_buff 字节数组容器（空）
 * @param buff_len 字节数组长度
 * @return int 转换成功返回0，失败返回-1
 */
int app_message_to_message_bytes(Message *message,char *bytes_buff, int buff_len);

/**
 * @brief 把message结构体转换为json
 * @param message message结构体
 * @return char * json字符串
 */
char * app_message_to_message_json(Message *message);

/**
 * @brief 把json转换为message结构体
 * @param json 字符串
 * @return Message * message结构体
 */
Message *app_message_json_to_message(char *json);
